package com.br.semperparata.pag_fbb_rj.entity;

import java.util.ArrayList;
import java.util.List;

public class Atividade {
	private String nome;
	private String descricao;
	private List<Exemplo> exemplos;
	private int duracao;
	private int ordem;
	private List<Ramo> ramos;
	private Momento momento;
	
	public Atividade(String nome, String descricao, List<Exemplo> exemplos,
			int duracao, int ordem, String ramos, Momento momento) {
		super();
		this.nome = nome;
		this.descricao = descricao;
		this.exemplos = exemplos;
		this.duracao = duracao;
		this.ordem = ordem;
		setRamos(ramos);
		this.momento = momento;
	}
	
	public Atividade(String nome, String descricao, int ordem) {
		super();
		this.nome = nome;
		this.descricao = descricao;
		this.ordem = ordem;
	}
	
	public Atividade(String nome, int ordem) {
		super();
		this.nome = nome;
		this.ordem = ordem;
	}

	public String getNome() {
		return nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public List<Exemplo> getExemplos() {
		if (exemplos == null)
			exemplos = new ArrayList<Exemplo>();
		return exemplos;
	}
	
	public Exemplo addExemplo(Exemplo exemplo) {
		exemplo.setAtividade(this);
		getExemplos().add(exemplo);
		return exemplo;
	}

	public int getDuracao() {
		this.duracao = somaDuracaoExemplos();
		return duracao;
	}

	public int getOrdem() {
		return ordem;
	}

	public List<Ramo> getRamos() {
		return ramos;
	}
	
	public void setRamos(String ramos) {
		String[] split = ramos.split(";");
		this.ramos = new ArrayList<Ramo>();
		
		for (String r : split) {
			Ramo ramo = null;
			try {
				ramo = Ramo.valueOf(r);
			} catch (Exception e) {}
			if (ramo != null)
				this.ramos.add(ramo);
		}
	}

	public Momento getMomento() {
		return momento;
	}
	
	public void setMomento(Momento momento) {
		this.momento = momento;
	}
	
	private int somaDuracaoExemplos() {
		int d = 0;
		if (exemplos != null) {
			for (Exemplo exemplo : exemplos) {
				d+= exemplo.getDuracao();
			}
		}
		return d;
	}
	
	@Override
	public String toString() {
		return getNome() + "(" + getExemplos().size() + ")";
	}
	
}
